package com.shishuo.cms.dao;

import java.io.Serializable;
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;


@Repository("baseDao")
public interface IBaseDAO <T, ID extends Serializable>{
	 /**
     * 保存（持久化）对象
     * @param o 要持久化的对象
     * @return 执行成功的记录个数
     */
	public Integer add(T ob) throws DataAccessException;

    /**
     * 更新（持久化）对象
     * @param o 要持久化的对象
     * @return 执行成功的记录个数
     */
	public Integer update(T ob) throws DataAccessException;

    /**
     * 获取指定的唯一标识符对应的持久化对象
     *
     * @param id 指定的唯一标识符
     * @return 指定的唯一标识符对应的持久化对象，如果没有对应的持久化对象，则返回null。
     */
	public T getById(ID id) throws DataAccessException;
	
	/**
	 * 删除
	 * 
	 * @param adminId
	 * @return Integer
	 * 
	 */
	public int deleteById(ID id) throws DataAccessException;
	
	
	/**
	 * 获取所有
	 * 
	 * @param offset
	 * @param rows
	 * @return List<Admin>
	 * 
	 */
	public List<T> getAllList(@Param("offset") long offset,
			@Param("rows") long rows) throws DataAccessException;
	
	
	/**
	 * 获取所有数量
	 * 
	 * @return Integer
	 * 
	 */
	public int getAllListCount() throws DataAccessException;
	
	
	public List<T> getAllList() throws DataAccessException;
	
	
}
